1.Git远程仓库操作
1.1 获取远程仓库的代码
1.1.1 直接获取到远端的代码最简单的基本操作
#git clone <仓库的URL>
1.1.2 拉取远程代码,并给URL取别名,方便以后操作
#git remote add <你自己对仓库URL的简称 short_name> <URL>
以后对项目URL的操作,可以使用这个别名进行,亦即效果同git clone 同时简化了以后可能用URL的地方,比如
#git fetch <URL> 可以简写成
#git fetch short_name 。
1.1.3 可以对添加的仓库进行重命名操作。
#git remote rename short_name short_name2
1.1.4 可以进行删除自己的简称,这样并不会删除远程的代码,但是会删除本地的代码信息
#git remote rm short_name
重新拉取远程代码按照以下步执行(也可以直接git clone <URL>):
#git log -1 //查看最近一次提交,复制提交的哈希校验码,假定为abc
#git reset --hard abc
#git pull
1.2 分支合并(针对本地)
假如有两个开发者,bob 和 jack,bob是发起者,项目路径为/home/bob/proj,此时如果jack想要加入bob的开发项目,Jack就可以 进入自己的工作目录/home/jack/,直接通过下面的命令复制到自己的目录下的myproj文件夹中。
#git clone /home/bob/proj myproj
jack针对代码进行开发。。。
#git add .
#git commit -m "我是jack,功能开发完毕"
这时候Jack告诉bob已经完成了开发任务并提交到了Jack的本地仓库,那么bob就可以合并Jack的分支了。
bob合并操作分为以下两种:
a) .bob非常信任Jack的技术,直接合并本地代码:
#git pull /home/jack/myproj
2. bob想看一下Jack修改了什么,先把Jack的修改拉取到自己的一个分支,然后确认无误后合并:
取出jack的代码,然后放在master工作目录下
#git fetch /home/jack/myproj master:jackworks
查看Jack修改的内容
#git whatchanged -p master..jackworks
确认无误后,合并分支
#git pull . jackworks.
删除本地的jackwork分支
#git branch -D jackworks
后续Jack如果需要继续开发,只需要在自己目录下
#git pull //不需要加任何参数
1.3 撤销操作
首先需要明确自己想撤销什么,git的文件存在以下4个位置
a).本地
b).暂存区(git add xxx.c操作就是把xxx.c放在了暂存区)
c).本地仓库(git commit 操作就是把暂存区的文件提交到了本地仓库)
d).远程仓库(git push 操作之后,文件就被推送到了远程仓库)
1.3.1 撤销git add xxx.c 操作
如果你想撤销 git add这个操作,即删除添加到暂存区的文件,但是保留本地的文件
#git reset HEAD helloworld.c
#git reset HEAD *.c 不推荐这样,因为可能会撤销别人提交的工作
1.3.2 撤销git commit 操作
撤销本地仓库(撤销git commit操作)的内容,可以使用
#git reset --soft HEAD~1
这样代码就回到了git add 之后的操作,也就是放在了暂存区,尚未进行git commit
1.3.3 同时撤销git add 和 git commit
,保留本地开发的文件
如果你想同时撤销暂存(git add)和本地仓库(git commit),可以使用下面的命令
#git reset --mixed HEAD~1
这个操作之后,代码回到了未暂存,未提交的状态。
1.3.4 对git reset --hard操作的撤销
如果你已经执行了git reset --hard, 将commit从分支中去除了,还是可以恢复的
#git reflog 找到对应的commit的哈希值
#git checkout -b <branch_name> <hash-id> 即可恢复
在Git 中,reset掉的commit不会立刻被清除,大概会保留90天
如果从未进行过commit操作就做了git reset --hard <hash-id> 无法找回!!!
1.3.5撤销git push操作
1.3.5.1 如果你想撤销一个已经提交到远程仓库的commit,可以调用git revert来在本地撤销
然后push到远程分支上。
#git reflog 得到待撤销的commit的hash值
#git revert <hash-id>
#git push 推送到远程
例如不小心把代码git push到远程分支了,想把远程代码“回滚”到push之前的样子
可以采用上面的操作。
1.3.5.2 回滚之后找回已经开发的代码
回滚之后本地代码也会变成远程恢复之后的样子,不过不用担心,之前的push也被git记录
下来了,此时只需要把刚刚revert操作的哈希值再次进行
#git revert <hash-id>
本地代码就又回来了,也就是说,我们撤销了一次远程的提交(git push),并且保留
了我们本地的开发代码。
1.4 本地新建分支并推送到远程
#git checkout -b branch_name
#git push --set-upstream origin <branch_name>
创建分支仅仅是在本地创建了一个分支,并没有服务器端与之对应,需要使用上面的命令进行提交。
1.5. 删除一个分支并提交到远程
#git push --delete origin <branch_namee>
1.6. 合并分支到master
#git checkout master
#git merge <branch_name>