git 日常收纳

279 阅读3分钟

撤销:git reset 相当于游戏中的存档 回档这个词比较好理解

如果还没 git add file : 使用该指令进行撤销: git checkout -- fileName
如果已经git add file :  但是没有 git commit -m  "" 分两步操作
b-1、git reset HEAD readme.txt  撤回到工作区 修改的内容还是保持
b-2、git status 
b-3、git checkout -- file               **修改的内容,与上次commit一样

**
如果已经git add file 并且已经 git commit :
通过 git log 或者 git log --pretty=oneline 、git reflog、git log --graph
找到对应的commit id进行回退:

git reset --hard 1094a 修改的内容没了 未add状态

git reset  1094a  直接撤回到工作区,未add状态,并且保存修改的内容

git reset --keep [commit]  保持暂存区和工作区不变

**

git reset –-soft :

**

意味着工作区不会收到影响,并且修改的文件从仓库区也进入了暂存区,执行git status 发现没有东西需要add到暂存区。  撤回到已是add状态

删除

一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit了
a、git rm test.txt
b、git commit -m "remove test.txt" 
另一种情况是删错了,因为版本库里还有
git checkout -- test.txt

提交

git add . 
git commit -m ""
git rebase 可以省去多次提交记录
git --continue  冲突后需要这个命令执行 再push
git push

查看差异

git diff 查看工作区与上次commit后的修改
git diff HEAD  查看暂存区(add后)与上次commit后区别

分支创建及跟踪

git checkout --track origin/new-branch

将创建mybranch和跟踪origin/abranch

git checkout -b branch origin/branch

将只创建' abranch',而不是具有不同名称的分支
使用Git 2.23(Q9 2019),将使用新命令git switch:git switch -c <branch> --track <remote>/<branch>

refusing to merge unrelated histories

拒绝无关的历史合并   :git pull origin master --allow-unrelated-histories

忽略文件提交

git rm -r --cached .
git add .
// 或者省略 add 这个步骤
git commit -m 'update .gitignore'
git push origin master

git 切换远程已有分支

本地分支a,且没有分支b,想要切换到远程分支b

1. git remote update origin --prune 更新本地分支列表与远程一致

2. git branch 查看本地所有分支,是否已经更新出分支b

以下不是必须

3. git checkout b 切换到分支b

4. git merge a 合并分支a到当前分支b上,该解决冲突的解决冲突

5. git push 更新到远程 (如果有需要的话) 

hint: Updates were rejected because the tip of your current branch is behind

版本不一致导致

有如下3种解决方法:1.使用强制push的方法:git push -u origin master -f这样会使远程修改丢失,一般是不可取的,尤其是多人协作开发的时候。2.push前先将远程repository修改pull下来git pull origin mastergit push -u origin master3.若不想merge远程和本地修改,可以先创建新的分支:git branch [name]然后pushgit push -u origin [name]

error: The following untracked working tree files would be overwritten by merge:

git fetch --all
git reset --hard origin/master

The repository for this project is empty(添加远程仓库)

Create a new repository
git clone git@git.runxsports.cn:zhijue/android/finance-risk.git
cd finance-risk
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
Push an existing folder
cd existing_folder
git init
git remote add origin git@git.runxsports.cn:zhijue/android/finance-risk.git
git add .
git commit -m "Initial commit"
git push -u origin master
Push an existing Git repository
cd existing_repo
git remote rename origin old-origin
git remote add origin git@git.runxsports.cn:zhijue/android/finance-risk.git
git push -u origin --all
git push -u origin --tags

待续……

学习网站:

https://blog.csdn.net/u012702547/category_9270926.html
https://www.cnblogs.com/chenwolong/p/GIT.html