git放弃本地修改&拉取代码冲突&tag标记&gitignore

一、未使用 git add 缓存代码

可以使用git checkout -- filepathname (比如: git checkout -- readme.md,不要忘记中间的 “--” ,不写就成了切换分支了!!)。放弃所有的文件修改可以使用 git checkout . 命令。

二、已经使用了 git add 缓存了代码

可以使用 git reset HEAD filepathname (比如: git reset HEAD readme.md)来放弃指定文件的缓存,放弃所以的缓存可以使用git reset HEAD . 命令。

三、已经用 git commit 提交了代码

可以使用git reset --hard HEAD^来回退到上一次commit的状态。此命令可以用来回退到任意版本:git reset --hard commit id
你可以使用 git log命令来查看git的提交历史。
回到了如(二)所示的状态。继续用(二、一)中的操作,就可放弃本地的修改

场景:已经commit提交了,但是后悔了,或者是你提交之前没有git pull拉取代码,导致有冲突,所以我们先撤回提交,这里有两个方法:git reset –hard 5029f0cc08cfgit reset --soft 5029f0cc08cf,下面详细说一下两个方法的应用:
git reset --soft <commit_id>:回撤commit到之前的某个commit_id版本,再git status查看,可以看到已经回撤,并且保留了之前修改。
git reset –hard <commit_id>:这种方式不推荐,他也是撤销,但是并不会保留之前的修改。再git push -f ,这样会清除掉提交的记录。除非你真的不想要你刚刚commit的代码,否则,使用这个命令会让你提交的代码全部清除,你之前的工作也就全白干了。用错了这个命令,恐怕哭都找不着调。所以,非常不推荐这个命令,用的话也一定要慎之又慎。
最后,执行git reset --soft <commit_id>之后,强制推送代码到分支:

git commit -m 'feat: test'
git push origin feat/blabla --force

四、拉取代码冲突

方法1:保留本地修改的代码,并把git服务器上的代码pull到本地。这种情况下代码中会有<<<<<<< Updated upstream提示,然后手动整合代码再上传。

git stash #暂存本地的代码
git pull #拉取远程代码
git stash pop #取出本地代码合并,之后会有<<<<<<< Updated upstream等东西出现,手动修改之后再push

git add .
git commit -m "xxx"
git push

方法2:覆盖本地的代码,只保留服务器端代码。这种情况下可以先把自己修改的地方记录在记事本中,拉取之后再合入自己的代码。

git reset --hard #重置到上个版本
git pull #拉取代码

五、提交的时候报错

1、代码已经pull过了,但是在push的时候提交报以下错误:

zhanyingzhu@zhanyingdeMacBook-Pro-3 client_program % git push
To 192.168.2.20:iOS/client_program.git
 ! [rejected]          dev_6270 -> dev_6270 (fetch first)
error: failed to push some refs to '192.168.2.20:iOS/client_program.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

提示:更新被拒绝,因为远程包含您所做的工作
提示:本地没有。这通常是由另一个存储库推入引起的
提示:到相同的引用。您可能想首先集成远程更改
2、再次按照提示pull

zhanyingzhu@zhanyingdeMacBook-Pro-3 client_program % git pull
remote: Counting objects: 28, done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 28 (delta 21), reused 0 (delta 0)
Unpacking objects: 100% (28/28), 10.43 KiB | 427.00 KiB/s, done.
From 192.168.2.20:iOS/client_program
   1a8ca731..c2daa381  dev_6270   -> origin/dev_6270
hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint: 
hint:   git config pull.rebase false  # merge
hint:   git config pull.rebase true   # rebase
hint:   git config pull.ff only       # fast-forward only
hint: 
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
fatal: Need to specify how to reconcile divergent branches.

致命的:需要指定如何调和不同的分支。
3、我们查看代码状态

zhanyingzhu@zhanyingdeMacBook-Pro-3 client_program % git status
On branch dev_6270
Your branch and 'origin/dev_6270' have diverged,
and have 1 and 1 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

提示你的分支和'origin/dev_6270'已经分叉,分别有1个和1个不同的提交。我们需要变基,将本地master最新的代码合进本地的branchA分支。完成后,本地的branchA分支是最新的。使用如下命令:
git rebase origin/dev_6270
然后使用
git pull --rebase
最后使用
git push
成功提交!!!

zhanyingzhu@zhanyingdeMacBook-Pro-3 client_program % git rebase origin/dev_6270
Successfully rebased and updated refs/heads/dev_6270.
zhanyingzhu@zhanyingdeMacBook-Pro-3 client_program % git pull --rebase
remote: Counting objects: 9, done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 9 (delta 7), reused 0 (delta 0)
Unpacking objects: 100% (9/9), 813 bytes | 101.00 KiB/s, done.
From 192.168.2.20:iOS/client_program
   c2daa381..ac56439e  dev_6270   -> origin/dev_6270
Successfully rebased and updated refs/heads/dev_6270.
zhanyingzhu@zhanyingdeMacBook-Pro-3 client_program % git push 
Enumerating objects: 79, done.
Counting objects: 100% (79/79), done.
Delta compression using up to 8 threads
Compressing objects: 100% (48/48), done.
Writing objects: 100% (48/48), 15.48 KiB | 3.87 MiB/s, done.
Total 48 (delta 32), reused 0 (delta 0), pack-reused 0
To 192.168.2.20:iOS/client_program.git
   ac56439e..5713ece9  dev_6270 -> dev_6270
zhanyingzhu@zhanyingdeMacBook-Pro-3 client_program % 

六、打tag

tag 就是 对某次 commit 的一个标识,相当于起了一个别名。我们的用处就是在项目中引入组件的特定tag来集成特定的某些版本功能。如下:

pod 'TYTNetworking', :git => 'git@192.168.22.120:iOS-Components/TYTNetworking.git', :tag => '0.2.0-beta'

1、查看tag

git tag : 直接列出所有的标签
git tag -l xxxx : 可以根据 xxxx 进行标签的筛选

2、查看tag提交的信息

git show 标签名
showtag

3、创建标签
创建标签有两种:轻量标签、附注标签
3.1 轻量标签
git tag 标签名 : 直接给当前的提交版本创建一个【轻量标签】
git tag 标签名 提交版本号 :给指定的提交版本创建一个 【轻量标签】,指定的版本就是commit_id

git tag 0.2.0-beta
git tag 0.2.0-beta 9c659159e63743657d6ad506e2b200b17f232fbd //指定版本创建标签

3.2 附注标签
附注标签就是我们在标签后面添加相应的注释描述,方便一目了然的知道我们的每个标签都做了什么,有两种方式,如下:

git tag -a 标签名称 -m 附注信息
git tag -a 标签名称 提交版本号 -m 附注信息

-a : 理解为 annotated 的首字符,表示 附注标签
-m : 指定附注信息
git tag -a 标签名称 -m 附注信息 :直接给当前的提交版本创建一个 【附注标签】
git tag -a 标签名称 提交版本号 -m 附注信息 :给指定的提交版本创建一个【附注标签】

git tag -a 0.2.0 -m "更新图片资源管理"
git tag -a 0.2.0 9c659159e63743657d6ad506e2b200b17f232fbd -m "中间类的迁移"

3.3 删除标签
git tag -d 标签名称 : 删除指定名称的标签

git tag -d 0.2.0

3.4 推送到远端仓库
默认情况下,git push 命令并不会把标签推送到远程仓库中。
使用下面的方法:

$ git push origin 标签名称
$ git push origin --tags

git push origin 标签名称 : 将指定的标签上传到远程仓库
git push origin --tags : 将所有不在远程仓库中的标签上传到远程仓库

git push origin 0.2.0
git push origin --tags

3.5 删除远程仓库的标签
下面两个命令都是删除远程仓库中的指定标签:

git push origin  :regs/tags/0.2.0
git push origin --delete 0.2.0

git tag 一文真正的搞懂git标签的使用!!!!!!!!!!
七、添加gitignore文件
gitignore的好处就是我们可以把不需要提交的文件都放到里面,比如Pods中的第三方库就没有必要提交到gitee库中。拉下来代码之后,直接pod install就行了。
创建gitignore:touch .gitignore
修改gitignore:open .gitignore

# Specify filepatterns you want git to ignore.
# OS X
.DS_Store

# Xcode
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/
*.xccheckout
profile
*.moved-aside
DerivedData
*.hmap
*.ipa

# Bundler
.bundle

# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts

Carthage/Build

# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
# 
# Note: if you ignore the Pods directory, make sure to uncomment
# `pod install` in .travis.yml
#
Pods/
Podfile.lock
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容

  • 如果在修改时发现修改错误,而要放弃本地修改时, 一, 未使用 git add 缓存代码时。 可以使用git che...
    gurlan阅读 6,509评论 0 4
  • 未使用 git add 缓存代码时。 可以使用 git checkout -- filepathname (比如:...
    自you是敏感词阅读 187评论 0 1
  • 场景1.本地修改尚未提交到暂存区, 即本地代码修改还没有执行(git add),使用命令 场景2. 本地修改已经...
    焦糖大瓜子阅读 9,419评论 0 3
  • 以前用git都是用工androidstudio上自带的工具,后面发现很多问题用命令行解决跟方便,但是对命令行不熟,...
    江中一沙洲阅读 224评论 0 1
  • Git使用教程:https://blog.csdn.net/tgbus18990140382/article/de...
    SkTj阅读 2,793评论 1 11