天天看點

在Mac上Git的使用(三)

1、放棄某次送出,重新送出(Abandoned之後的操作)

git log
git reset 指定的版本号
git add -A
git commit -m"修改描述"
           

2、送出本地修改的部分檔案到遠端庫

git add 檔案本地完整路徑
git commit -m"修改描述”
git stash (把不願意送出的檔案存入本地備份中)
git review 分支名稱
git stash pop(把你之前不願意送出的檔案pop出來)
           

3、解決檔案内容沖突,送出代碼到遠端庫

1、合并遠端庫與本地的代碼

git status
git stash
git pull
git stash pop
           

2、若有沖突,解決完沖突後,執行

git add -A
git commit -m"修改描述"
git review 分支名稱
           

4、遇到如下問題的解決辦法:

在Mac上Git的使用(三)

解決辦法:

git reset --hard HEAD^ // 回到上一個版本
git clean -f -d // clear untracked working tree file
git pull // 重新從遠端倉庫上擷取更新内容
           

注:在執行git clean -f -d 指令前,未跟蹤的檔案要記的做備份。

将本地的代碼上傳到github上:

git add .
git commit -m"init submit code"
git remote add origin https://github.com/hpdx/MLog.git

git pull origin master
git push origin master
git push --set-upstream origin master
           

在執行

git pull origin master

時若報如下錯誤:

fatal: refusing to merge unrelated histories

請改用如下指令:

git pull origin master --allow-unrelated-histories

建立了一個Module(lib),忘記添加.gitignore檔案,結果同僚pull的代碼,編譯後發現一大堆不想看到的build檔案,

若想以後不再看見它,這時需要每個更新了代碼的人都做的處理如下:

git rm -r --cached wheelview/build
git add .
git commit -m"rm build files"
git push
           

其中wheelview為Module的名稱

git stash删除後,有辦法恢複嗎
首先輸入
git fsck --lost-found
           
會看到 一條一條的記錄 類似 
   dangling commit be96627fde29961d420d887533d7796

複制dangling commit 的id(其他的dangling blob不用理會)

然後輸入
git show be96627fde29961d420d887533d7796

    檢視具體内容, 找到你想要的記錄
    記錄中會描述日期和摘要,
    日期是你git stash 的日期, 
    摘要會記錄你是在哪一條commit 上進行git stash操作的, 
    類似(WIP on integration-xf: ac Merge branch 'release' into develop)
    貌似隻能一條記錄一條記錄的檢視

找到你想要的記錄後輸入
git merge be96627fde29961d420d887533d7796

這樣就還原了你git stash drop, git stash clear  的内容
           

push代碼的時候,報出了如下錯誤:

android-lstekiMacBook-Pro:HungerDating android_ls$ git push
error: src refspec dev_1 matches more than one.
error: failed to push some refs to '[email protected]:Android/HungerDating.git'
           

解決辦法:

android-lstekiMacBook-Pro:HungerDating android_ls$ git tag
dev_1
dev_1
dev_1
android-lstekiMacBook-Pro:HungerDating android_ls$ git tag -d dev_1
Deleted tag 'dev_1.3' (was b70c097)
android-lstekiMacBook-Pro:HungerDating android_ls$ git push
Counting objects: , done.
Delta compression using up to  threads.
Compressing objects: % (/), done.
Writing objects: % (/),  KiB |  bytes/s, done.
Total  (delta ), reused  (delta )
To git@:Android/HungerDating.git
   a5eb40..f4841  dev_1 -> dev_1
           

checkout遠端的dev分支,在本地起名為dev分支,并切換到本地的dev分支

git checkout -b develop_version96 origin/develop_version96
           

将本地分支推送到遠端倉庫

git push origin dev_1.
           

合并分支到master上,先切換分支到master上,在merge目标分支到master上

git checkout master
git merge dev_1
git commit -m "commit dev_1.8"
git push
           

建立tag并送出到遠端

git tag -a tag_1 -m "commit v1.11"
 git push --tags