git 工作区域
本地开发完之后通过add命令会把本地工作区的代码添加到暂存区(stage),然后commit之后会将stage中的代码提交到本地分支的版本库中,之后执行push会推到远程分支中。
分支管理策略
master应该是非常稳定的,也就是近用来发布的新版本,平时不在上面开发,所有的开发应该在dev分支上,测试验收完成,再把dev合并到master发布版本。
Bug分支
有时候在开发过程中需要紧急修复一个bug,想要pull最新的代码,但是又不想将正在开发到一半的代码提交,那么可以先暂存开发的代码,使其返回到自己上一个commit,改完bug之后再stash pop,继续原来的工作。
git stash 暂存当前代码
git stash pop 取出暂存的代码
git stash list 查看现有的储藏
feature分支(功能分支)
如果有多人协作的话,需要开出多个feature分支,各自开发完成之后再合并。
打开gitlib然后新建一个项目取好名字,然后按照底下给的提示在cmd中create 仓库。注意在更新项目时要先pull,然后提交更新然后push
git提交文件的顺序:
git add . // add全部文件
git add a b c d e // 文件之间添加空格表示依次添加文件
git commit -m "" 提交代码到本地
git pull 拉去代码
git push push代码
git status 查看更改的文件
拉取远程分支并创建本地分支
git checkout -b 本地分支名x origin/远程分支名x(使用该方式会在本地新建分支x,并自动切换到该本地分支x。)
git fetch origin 远程分支名x:本地分支名x(使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checkout。)
版本回退
git 将本地的状态回退到和远程一样
git reset --hard origin/master
查看分支
查看本地分支:git branch 查看本地以及远程分支:git branch -a
切换分支
切换分支:git checkout "分支名"
创建分支
从已有的分支创建新分支(如从master分支),创建一个dev分支:
git checkout -b dev,如果需要从某一个分支切出另一个分支,需要先切换到该分支下,然后在该分支中执行该命令,则可以从该分支中创建出另一个分支。
远程与本地关联
远程没有关联local_branch分支,并且本地已经切换到remote_branch分支,要关连本地和远程分支:
git push origin local_branch:remote_branch
切换分支之前需要将当前分支修改的内容全部提交完,如果未提交完成则无法提交。
标绿色表示当前分支
在分支下pull或者push
git push origin develop (develop为分支名)
或者git push origin develop(本地分支):
git pull origin develop(远程分支):devleop(本地分支)
下面的命令执行前提是在gitLab上有了地址
Git global setup
git config --global user.name "魏昌洲"
git config --global user.email "[email protected]"
Create a new repository
git clone http://10.116.15.196:9999/wcz123/TestProject.git
cd TestProject
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
Existing folder
cd existing_folder
git init
git remote add origin http://10.116.15.196:9999/wcz123/TestProject.git
git add .
git commit -m "Initial commit"
git push -u origin master
Existing Git repository
cd existing_repo
git remote add origin http://10.116.15.196:9999/wcz123/TestProject.git
git push -u origin --all
git push -u origin --tags
如何将本地的master代码关联到分支上:直接从分支上拉取代码。
例如直接在master上拉取下来的代码上执行git pull origin develop。
关于.gitignore
如果项目中没有.gitignore文件,可以手动创建一个。
有时候.gitignore不起作用,原因就是因为.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
git rm -r --cached .
git add .
git commit -m “gitupdate gitignore file”
有时候执行这样的操作之后,在add时有的文件会的追踪会丢失,需要进入该文件目录中将.git文件删除之后再add。
如果要在.gitignore中添加某一个需要忽略的文件可以针对该文件做忽略 eg:
如果.gitignore写的有问题,需要找出来是哪里写错了,可以用git check-ignore命令检查。
如何在新建项目时拉取到develop上的代码:
先git clone 代码,这时候本地代码是master上的,然后执行git checkout -b 本地分支名x origin/远程分支名x 拉取分支代码并在本地创建分支。可参考http://blog.csdn.net/tterminator/article/details/52225720。
git diff
git diff 文件 查看文件修改,查看文件修改了哪些地方,cd到该文件下,然后执行该命令。图片中红色的地方是没修改之前的,绿色的是修改了的。
git fetch
git fetch 更新远程分支,比如其他人创建了一个远程分支,你这边没更新到,可以用git fetch命令更新一下。
git fetch <远程主机名>某个远程主机的更新,全部取回本地。
git fetch <远程主机名><分支名>取回所有分支(branch)的更新。
git fetch -p 远程有删除的分支,通过该命令可以更新
git merge
git merge命令用于合并指定分支到当前分支。例如将dev分支合并到master分支上:
1、切换到master分支下
2、执行git merge dev命令将dev分支合并到master分支。
3、将远程的分支合并到本地:git merge origin/dev(远程的分支)
4、git merge dev1 合并本地分支dev1到当前分支
删除分支
git push origin :dev (origin后面有空格) 删除远程分支。或者git push origin --delete 分支名
git branch -d
git branch -D
在删除本地分支之前,当前分支不能为该分支。
git log
git log --graph --pretty=oneline --abbrev-commit
查看分支的合并情况,包括分支合并图、一行显示、提交校验码缩略显示。
版本回退
git reset --hard HEAD^
回退到上一个版本。
同理,回退到上上个版本为:HEAD^ ^, 回退到上100个版本为:HEAD-100,貌似波浪号 ~ 也可以,变成倒数第101个。
git checkout . 类似git reset的作用,放弃对文件的修改
git tag
版本的发布会一直持续,如果上一个版本出了问题,我们需要版本追溯时可以通过git tag直接定位到出问题的版本。通过这个命令可以避免不断的开出分支来保留上一个版本。
git tag 查看目前有哪些tag。
git show tag-name 查看某一个tag下的具体信息。
git checkout tag-name 将工程定位到相应的tag处。
git tag -a v1.0.0 -m “1.0.0版本” 为当前版本添加附注。
git push origin v1.0.0单独提交本次tag。
git push --tags 提交所有tags。
git tag -d v1.0.0 删除标签。
git push origin --delete tag删除远端tag。
在gitlab下,一般只有项目创建者才有权限合并和提交代码到master上,如果要给开发者提供开发master分支的权限,需要在项目面板Settings ->Repository中将项目的开发权限放开。
[图片上传中...(屏幕快照 2018-02-24 上午10.46.48.png-dc3cbf-1519440588579-0)]
查看历史提交明细:
1、gitLab -> Repository -> Commits然后查看提交过的文件的详细更改
2、或者可以cd到某一个文件下,通过git log filename来看这个文件以往的提价记录,每个提交记录对应着一个hash值,然后执行git show hashValue来查看具体的内容。
git reflog 查看各分支的提交记录
这个命令记录了所有的提交记录,HEAD前面的值是关键,如果代码合并或者出现了别的错误,需要恢复到某一个提交的点,可以先用这个命令查看所有的提交记录,找到需要的HEAD的值,然后执行git reset 28d447f –hard命令,中间的28d447f替换成自己查找出来的值。git命令行记住用户名和密码
git config --global credential.helper store
先输入该命令,然后再执行其他git命令时输入用户名和密码就会记住该用户名和密码了。
记录一次遇到的git问题:
强制将本地推到远程的分支
如果本地的版本是对的,想用本地的分支替换掉远程的分支,可以先切到该本地分支,然后使用命令 :git push -u origin master -f ,其中“master”是目标远程分支。
远程的git地址发生变更怎么修改?
在项目文件夹中找到.git文件,然后打开里面的config文件,然后修改url参数。
附上廖雪峰的git讲解:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000