Git常用命令整理

Git原理以及完整命令这里不做介绍,仅介绍实际工作中用到的一些命令。

分支命名

0、自带master分支不做赘述,一般新建一个名为develop的分支作为开发分支。
1、单人开发的时候可以直接在develop上开发,然后合并到master上。
2、多人开发的时候以develop分支新建功能分支(feature_功能_日期),例如feature_login_20181210,feature_user_20181210,定期将功能分支合并到develop, 然后在将develop反向合并到功能分支,这样可以调用不通功能分支上的方法。最后把功能分支都合并到develop, develop再合并到master。
3、平常项目维护可以命名新分支hotfix_功能名_日期。例如: hotfix_user_20181210。
4、平常项目bug修复可以命名新分支bugfix_功能名_日期。例如: bugfix_user_20181210。

常用功能命令

一、项目通过git来托管
0、通过gitlab新建project, Visibility Level 一般是private。新建后可以得到Project path, 例如:http://git.intra.niliu.com/tv/niliu.git。
1、Git全局设置

git config --global user.name "salmonl"
git config --global user.email "salmonl@gmail.com"

2、新建项目

git clone http://git.intra.niliu.com/tv/niliu.git
cd niliu
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

3、添加已有项目文件到git

cd existing_folder
git init
git remote add origin http://git.intra.niliu.com/tv/niliu.git
git add .
git commit -m "Initial commit"
git push -u origin master

二、获取分支
0、获取master分支

git clone http://git.intra.niliu.com/tv/niliu.git

1、拉取远程分支【项目开发必备】

git fetch origin origin_branch_name
git branch -r
git checkout -b local_branch_name origin/origin_branch_name

2、新建分支
以master分支新建develop

git checkout master
git checkout -b develop

3、分支合并到master

git checkout master
git merge branch_name

4、把分支push到远端

git push origin branch_name
# 其实切换到branch后,执行下面的命令后,下次直接git push就行,不需要代分支名,节省时间
git push --set-upstream origin branch_name

三、分支操作
0、在本地删除一个分支

git branch -d branch_name
#强制删除
git branch -D branch_name
#精简远程已删除分支
git fetch -p origin

1、在远程端删除一个分支

git push origin :branch_name   (分支名前的冒号代表删除)
git push --delete origin develop

2、忽略本地修改,强制更新master到本地分支

git fetch --all
git reset --hard origin/master

3、本地未提交,不能合并,可以stash

git stash
#do some work
git stash pop

4、强制push分支

git push -f origin rest

5、撤销

git reset HEAD

#文件退出暂存区,但是修改保留
git reset --mixed

6、rename 分支
思路:删除远程分支->重命名本地分支->push本地分支

git branch -av
git branch —delete origin global_db
git branch -m globel_db global_db
git push -u origin global_db

四、Tag
0、创建含附注的tag

git tag -a v1.0 -m 'v1.0 milestone'

1、提交tag

git push origin v1.0

五、日志
0、查看日志

git log --oneline -5 --author salmonl --before 'May 26 2016'
git log -l 5

六、疑难杂症
0、git pull需要输入密码
进入项目中,执行以下命令

git config --global credential.helper store

1、ssh key
git push的时候不一定要生成添加ssh keys 【https的时候不用, ssh需要】
2、git push 异常【remote: HTTP Basic: Access denied。fatal: Authentication failed】

#解决问题,需要输入账号信息
git push -u origin branch

3、git 修改后的文件不git add 也可以,直接git commit why
4、git pull错误
error: 工作区中下列未跟踪的文件将会因为合并操作而被覆盖

git fetch --all
git reset --hard origin/branch_name

5、修改文件后直接git commit就行,为啥还需要git add。
我们支持新增文件的需要先git add filename, 然后git commit filename, 但是对于修改的文件,发现不git add,直接git commit也可以,为啥不节省一步呢?困惑了很久。
后来终于弄明白了:
先说原理,git add 是添加工作区内容到暂存区; git commit 是提交暂存区的修改到本地仓库,也可以提交工作区内容到本地仓库;git push是把本地仓库修改推送到远端仓库。
即使明白原理当时还是困惑,后来实际工作中,多人开发,我们有时候需要先把工作区修改git stash暂存了【不完善不能提交,可能是写到一半的代码】,然后git fetch, git pull, 在git pop继续未完成的工作。这个时候就需要git add, 不然git stash为覆盖本地修改。

坚持优秀的习惯:commit前先add, 然后fetch、pull, 在commit、push

git用法完整介绍:
《Git教程- 廖雪峰的官方网站》
《阮一峰 常用Git命令清单》

发表评论

电子邮件地址不会被公开。 必填项已用*标注