赞
踩
sudo apt-get install git
详见参看链接1
在github中添加ssh key详见上述链接,如果在gitlab中添加ssh key,具体页面如下所示:
git 命令 --help
#例如
git push --help
git log #查看当前分支的历史版本和更新记录
git reflog #查看仓库中历史版本的修改记录,是git log的简洁信息显示
cd project_folder #进入工程所在文件夹
git init #创建git仓库,会生成一个.git隐藏文件夹
git add -A #将工程所有文件夹添加到git仓库,“-A”表示添加所有文件到仓库,可以直接输入指定文件(需要指定明确的路径),即表示添加制定文件到仓库
git status #查看当前分支下所有文件的状态
git commit -m “description of the added version” #添加软件版本的描述信息
git push origin master #将本地master分支下的内容更新到远程github或gitlab上,如果只是本地的工程,则可以进行这一步
终端中显示的绿色并有指向标指示即为当前所在分支
git branch
git branch newbranch #创建一个本地分支
git push origin newbranch:newbranch #创建一个远程分支
git checkout branchname
#删除分支local_branch
git branh -d local_branch
#删除分支remote_branch
git push origin --delete remote_branch
1)通过 git status 命令查看
2)文件包括三种状态2:
Changes to be committed:表示文件处于缓存区,处于staged状态,可以通过git commit命令添加到仓库区(本地仓库)
Changes not staged for commit:显示的是工作区(本地可操作的文件)和仓库区中文件的状态,显示为modified或者unmodified状态,如果是unmodified状态则不会显示
Untracked files:表示该文件仅在工作区,没有保存在仓库区和缓存区3
对于文件在这个几个状态之间的切换,可以通过一定的命令进行4
代码提交到仓库的流程如下所示2,下述示意图描述了代码4个工作区域转移的关系,具体为工作去(Workspace)、暂存区(Stage/Index)、本地仓库区(Repository或Git Directory)、远程仓库区(Remote Directory)
#使用范例:
git push <远程主机名> <本地分支名>:<远程分支名>
#例如:
#从本地的master分支上传到远程仓库的master分支,并合并内容
git push origin master:master
git push origin master //等效命令
#强制上传本地master分支到远程master分支,覆盖远程仓库的版本
git push --force origin master
git push -f origin master #等效命令
git push origin +master #等效命令
#删除远程仓库的分支
git push origin --delete master
git push origin :master #等效命令,使用空分支覆盖远程分支
#新建远程分支newbranch,并将本地master分支推送到远程newbranch分支
git push origin master:newbranch
1、从远程仓库中下拉分支,并在新加一个分支
下述命令实现,在本地新建一个分支local_branch,并将远程分支remote_branch的内容下拉,然后切换到本地分支local_branch。
git checkout -b local_branch origin/remote_branch #这种方法会自动建立本地分支和远程分支的映射关系
git fetch origin remote_branch:local_branch #这种方法不会自动建立本地分支和远程分支的映射关系
2、从远程仓库中下拉版本,并合并到本地分支
git pull 命令用于从远程获取代码并合并本地的版本。7
git pull 是 git fetch 和 git merge FETCH_HEAD 的简写。
#使用范例:
git pull <远程主机名> <远程分支名>:<本地分支名>
#下拉远程的master分支,并与本地的localbranch合并
git pull origin master:localbranch
git fetch origin master:localbranch + git merge localbranch #等效于这2条命令
#下拉远程的master分支,并与本地当前的分支合并
git pull origin master
相比之下,git fetch会更加安全一些。
git reset --hard HEAD^ #回退到上一版本软件
git reset --hard commit_number #通过git log命令查看需要回退的版本的commit号
git reset --hard ID #通过git reflog命令查看需要回退的版本的ID号,就是版本最前面的ID号
git reset --hard HEAD~number #通过git reflog命令查看需要回退的版本的number号
如果回退之后,又想返回到新的版本,可以通过commit或ID号返回对应的版本。8
删除远程仓库中记录的方法是先在本地回退到指定版本,然后在强行push到远程仓库,覆盖之前的提交记录,所以只能删除最新的1个或几个提交记录,无法删除中间某个记录,通过2条命令实现9。
git reset --hard HEAD^ #回退到上一版本
git push --force origin master #强行将本地仓库的版本推到远程仓库
分支在本地
1.1 修改最近一次的commit
终端输入:git commit --amend
在弹出的页面中,你会看到对应的需要修改的commit,直接修改commit即可,然后保存退出
1.2 修改多次之前的commit
1)在终端输入:git rebase -i HEAD~2
其中最后的数字表示显示倒数几次的commit,2表示显示倒数第一和第二次的commit
2)在弹出的页面中,将需要修改的commit前面的pick改为edit,然后保存退出
3)接下来终端会提示输入相应的命令
先输入:git commit --amend
然后与1.1中的操作一样,修改需要修改的commit
4)再根据提示输入:git rebase --continue
如果是需要之前多个commit,则在1)中输入对应commit的次数,在2)中将修改的commit前面的pick都改为edit,接下去根据提示进行操作既可以,具体操作与上述3)和4)一致,需要修改几个commit就会进行几次的3)和4)操作
详细图示教程参见
分支已经上传到远端
将远程分支下拉到本地,然后按上述操作进行
然后使用本地分支强行覆盖远程分支,具体参见本文第七部分
查看commit
3,1 git log
查看对应commit的commit_id
3,2查看指定版本的commit_id
获取完整commit id(如:bb4f92a7d4cbafb67d259edea5a1fa2dd6b4cc7a)
git rev-parse HEAD
获取short commit id,完整commit_id的前7位(如:bb4f92a)
git rev-parse --short HEAD
2)在终端输入该命令之后会弹出修改界面,将“add 3line” commit内容最前面的pick改为squash,合并commit是将新的commit合并到旧的commit中,所以是将新的commit前面的pick改为squash,如果修改错误,并且保存了结果,那么rebase将会出错,可以输入git rebase --abort取消上一次的修改,然后重新修改;
3)保存退出,然后会自动进入到修改commit内容的页面,将需要合并的commit进行修改,留下最终需要的commit,保存退出。
如果本地分支修改了很多之后,并且commit了一版,然后发现commit的代码有问题,想使用远程分支覆盖本地分支重新开发,此时有多种方式可以实现使用远程分支覆盖本地分支的操作。
1、回退本地版本+下拉远程分支
git log
git reset --hard commit_number #通过git log命令查看需要回退的版本的commit号
git pull origin remote_branch #将远程的remote_branch 分支下拉到本地当前分支
2、更新远程代码到本地+强行覆盖
自己实际没有使用过。
git fetch #将远程代码更新到本地仓库
git reset --hard origin/master #git reset会将本地的master分支重置为刚刚fetch的内容,其中master为本地需要覆盖的分支名称
3、通过git pull --force强行覆盖
自己实际没有使用过。
git pull --force origin remote_branch:local_branch
git push --force origin remote_branch:local_branch
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。