赞
踩
=============================基本操作=================================
一、linux安装git
yum install git
二、拉取项目
git clone https://github.com/sdwmbyy/test.git
三、查看状态
git status
四、进入目录
cd test
五、新建“日记”文件,添加一行“我今天吃了一个苹果“ ,添加完后退出
vi 日记
六、查看状态:说明项目还没提交
git status
[root@localhost test]# git status
# 位于分支 master
# 未跟踪的文件:
# (使用 "git add <file>..." 以包含要提交的内容)
#
# "\346\227\245\350\256\260"
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
七、为新添加的文件建立跟踪,并查看状态
git add 日记
[root@localhost test]# git add 日记
[root@localhost test]# git status
# 位于分支 master
# 要提交的变更:
# (使用 "git reset HEAD <file>..." 撤出暂存区)
#
# 新文件: "\346\227\245\350\256\260"
#
七、提交,并添加描述,“我新增了一个日记文件”。
git commit
我新增了一个日记文件
# 请为您的变更输入提交说明。以 '#' 开始的行将被忽略,而一个空的提交
# 说明将会终止提交。
#
# 提交者: root <root@localhost.localdomain>
#
# 位于分支 master
# 要提交的变更:
# (使用 "git reset HEAD <file>..." 撤出暂存区)
#
# 新文件: "\346\227\245\350\256\260"
#
八、查看状态:说明项目已经得到提交
git status
我新增了一个日记文件
# 请为您的变更输入提交说明。以 '#' 开始的行将被忽略,而一个空的提交
# 说明将会终止提交。
#
# 提交者: root <root@localhost.localdomain>
#
# 位于分支 master
# 要提交的变更:
# (使用 "git reset HEAD <file>..." 撤出暂存区)
#
# 新文件: "\346\227\245\350\256\260"
#
~
~
".git/COMMIT_EDITMSG" 12L, 369C written
[master a944d48] 我新增了一个日记文件
Committer: root <root@localhost.localdomain>
您的姓名和邮件地址基于登录名和主机名进行了自动设置。请检查它们正确
与否。您可以通过下面的命令对其进行明确地设置以免再出现本提示信息:
git config --global user.name "Your Name"
git config --global user.email you@example.com
设置完毕后,您可以用下面的命令来修正本次提交所使用的用户身份:
git commit --amend --reset-author
1 file changed, 1 insertion(+)
create mode 100644 "\346\227\245\350\256\260"
[root@localhost test]# git status
# 位于分支 master
# 您的分支领先 'origin/master' 共 1 个提交。
# (使用 "git push" 来发布您的本地提交)
#
无文件要提交,干净的工作区
九、同步到GitHub
git push
Username for 'https://github.com': sdwmbyy
Password for 'https://sdwmbyy@github.com': 输入自己的密码
=============================基本操作end=================================
=============================处理冲突=================================
如果两个人修改项目中某个文件的同一个地方,第二个人push的时候
就会发生冲突。如下提示
[root@localhost test]# git push
warning: push.default 未设置,它的默认值将会在 Git 2.0 由 'matching'
修改为 'simple'。若要不再显示本信息并在其默认值改变后维持当前使用习惯,
进行如下设置:
git config --global push.default matching
若要不再显示本信息并从现在开始采用新的使用习惯,设置:
git config --global push.default simple
参见 'git help config' 并查找 'push.default' 以获取更多信息。
('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git,
为保持兼容,请用 'current' 代替 'simple' 模式)
Username for 'https://github.com': sdwmbyy@163.com
Password for 'https://sdwmbyy@163.com@github.com':
To https://github.com/sdwmbyy/test.git
! [rejected] master -> master (fetch first)
error: 无法推送一些引用到 'https://github.com/sdwmbyy/test.git'
提示:更新被拒绝,因为远程版本库包含您本地尚不存在的提交。这通常是因为另外
提示:一个版本库已推送了相同的引用。再次推送前,您可能需要先合并远程变更
提示:(如 'git pull')。
提示:详见 'git push --help' 中的 'Note about fast-forwards' 小节。
1.下拉项目进行冲突合并
git pull
[root@localhost test]# git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 3 (delta 1), pack-reused 0
Unpacking objects: 100% (3/3), done.
来自 https://github.com/sdwmbyy/test
7e802af..3eefd71 master -> origin/master
自动合并 我的大学
冲突(内容):合并冲突于 我的大学
自动合并失败,修正冲突然后提交修正的结果。
2.查看状态
git status
[root@localhost test]# git status
# 位于分支 master
# 您的分支和 'origin/master' 出现了偏离,
# 并且分别有 1 和 1 处不同的提交。
# (使用 "git pull" 来合并远程分支)
#
# 您有尚未合并的路径。
# (解决冲突并运行 "git commit")
#
# 未合并的路径:
# (使用 "git add <file>..." 标记解决方案)
#
# 双方修改: "\346\210\221\347\232\204\345\244\247\345\255\246"
#
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
3.查看差别
git diff
[root@localhost test]# git diff
diff --cc "\346\210\221\347\232\204\345\244\247\345\255\246"
index 2928822,5ef8c68..0000000
--- "a/\346\210\221\347\232\204\345\244\247\345\255\246"
+++ "b/\346\210\221\347\232\204\345\244\247\345\255\246"
@@@ -1,3 -1,3 +1,7 @@@
这是的高尔基的一本著名的小说
++<<<<<<< HEAD
+我初三的时候看过这本小说.
++=======
+ sdwmbyy:我没看过,是啊,我根本没有看过。
++>>>>>>> 3eefd71358ff0b9d3f092ab25b8569cf95dc5328
4.处理冲突,即选择哪个提交作为最终版本
vi 我的大学
[root@localhost test]# vi 我的大学
这是的高尔基的一本著名的小说
<<<<<<< HEAD
我初三的时候看过这本小说.
=======
sdwmbyy:我没看过,是啊,我根本没有看过。
>>>>>>> 3eefd71358ff0b9d3f092ab25b8569cf95dc5328
如果你想保留刚才本地修改的代码,并把git服务器上的代码pull到本地(本地刚才修改的代码将会被暂时封存起来)
git stash
git pull origin master
git stash pop
5.将我的大学文件的内容变为,即选择第二次提交作为最终版本
这是的高尔基的一本著名小说
我初三的时候看过这本小说.
6.查看状态
git status
7.添加变更
git add 我的大学
8.提交
git commit
我push时,我的大学有冲突,我的选择我的版本为最终版本
9.上传:
git push
=============================处理冲突end=================================
=============================回到过去=================================
为什么要这么做:因为有些从Github上pull过来的项目可能被某些人改得面目全非。
因此,需要回到pull之前的版本上去。
1.查看日志,即之前进行了哪些提交
git log
commit 43a31f9c01833f807de3c899382ac3efec4f7536
Merge: 50ac9da 3eefd71
Author: root <root@localhost.localdomain>
Date: Fri Aug 24 19:29:33 2018 +0800
我push时,我的大学有冲突,我的选择我的版本为最终版本
Conflicts:
我的大学
commit 50ac9dab5087bf2ca6be9daecfc50593e81a7684
Author: root <root@localhost.localdomain>
Date: Fri Aug 24 19:20:08 2018 +0800
我曾经看过这本书
commit 3eefd71358ff0b9d3f092ab25b8569cf95dc5328
Author: root <root@localhost.localdomain>
Date: Fri Aug 24 11:18:33 2018 +0000
是啊,我确实没有看过哦。
commit 7e802afd54390c2536a96790bf5131a207df7f3b
Merge: 0387f38 8406b11
Author: root <root@localhost.localdomain>
Date: Fri Aug 24 11:09:27 2018 +0000
Merge branch 'master' of https://github.com/sdwmbyy/test
发生了冲突,我选择第二次修改的版本为最终版本。
Conflicts:
我的大学
commit 0387f380aa7f959b67ad61535ee92a03c7395ebf
Author: root <root@localhost.localdomain>
Date: Fri Aug 24 10:53:02 2018 +0000
HowardHub:这本小说还可以
commit 8406b117f1636ba5c45645bf5355ec0f21672756
Author: root <root@localhost.localdomain>
Date: Fri Aug 24 18:51:16 2018 +0800
我对“我的大学”进行了修改,
commit 90bbf2566d175f9d186a15a3cd43bc115f96c351
Author: root <root@localhost.localdomain>
Date: Fri Aug 24 18:11:41 2018 +0800
sdwmbyy:梨好吃。
2.根据某个时间点的coomit id,回到那个版本。hard代表了当前代码的版本的指针
git reset --hard 7e802afd54390c2536a96790bf5131a207df7f3b
3.回到未来
git reflog #列出当前版本号之前的版本
[root@localhost test]# git reflog
3eefd71 HEAD@{0}: reset: moving to 3eefd71358ff0b9d3f092ab25b8569cf95dc5328
43a31f9 HEAD@{1}: commit (merge): 我push时,我的大学有冲突,我的选择我的版本为最终版本
50ac9da HEAD@{2}: commit: 我曾经看过这本书
7e802af HEAD@{3}: pull: Fast-forward
8406b11 HEAD@{4}: commit: 我对“我的大学”进行了修改,
90bbf25 HEAD@{5}: commit: sdwmbyy:梨好吃。
7100f7b HEAD@{6}: pull: Merge made by the 'recursive' strategy.
f7ee1f8 HEAD@{7}: commit: 新添加了一记文件“我的大学”
a944d48 HEAD@{8}: commit: 我新增了一个日记文件
e76129b HEAD@{9}: clone: from https://github.com/sdwmbyy/test.git
git reset --hard
[root@localhost test]# git reset --hard 3eefd71
HEAD 现在位于 3eefd71 是啊,我确实没有看过哦。
=============================回到过去end=================================
=============================建立里程碑==================================
点击项目名-->点击release-->点击Draft a new release-->输入里程碑相关信息-->
-->完成发布。
之后,如果这个版本有bug,就可以在此基础上进行修改。
=============================建立里程碑end=================================
=============================分支开发与合并==================================
1.使用场景:昨天发布的版本中,出现了一个bug,需要马上进行修复,而master分
支已经推送了新的功能代码,所以不能在master分支上进行立刻发布(如果发布,就会
把没有测试过的代码待到外面去,会有更多bug产生)。
2.解决办法:用已经发布的代码为基础,创建一个分支,对bug进行修改。修改完成后,把
它合并到正在开发的分支上。这样在不影响现有代码的情况下,对bug进行处理。
3.操作流程:新建分支-->修改bug-->将分支合并到master
=============================分支开发与合并end==================================
=============================其它经验==================================
1.多用网站和客户端,少用命令行
2.每次提交前,diff自己的代码,对diff部分进行仔细检查,避免提交错误的代码。
3.下班前,整理好自己的工作区。把要提交的代码提交,把不需要的代码删除。
4.并行项目,使用分支进行开发
5.遇到冲突时,要搞明白冲突的原因,不要随意丢弃别人的代码。
6.发布时,记得打tag,方便将来拉分支修bug
7.删除本地仓库与远程的关联:git remote remove origin
8.将远程仓库拉取到本地的正确顺序:在某个目录下打开git,先执行git clone,而不是git init!!!!
9.gitigore不起作用的解决办法
git
rm
-r --cached .
git add .
git commit -m
'update .gitignore'
10.执行git pull origin master时,出现"refusing to merge unrelated histories"错误的解决办法
1.git pull origin master --allow-unrelated-histories
2.确认commit文件
3.git pull oring master
4.其他分支出现这种情况,重复1,2,3
11.删除本地或远程分支
1.查看所有分支
git branch -a
2.查看当前所在分支
git branch
3.删除本地的bug_xzx分支
git branch -d bug_xzx
4.删除远程的bug_xzx分支
git push origin --delete bug_xzx
=============================其它经验==================================
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。