git基本命令,SSH,分支合并,常见错误等

1. 基本命令

git clone https://xxx/xx.git
git fetch:相当于是从远程获取最新版本到本地,不会自动merge
git pull:相当于是从远程获取最新版本并merge到本地
git diff 2a 2b 比较两个版本
git branch test 创建本地test分支
git checkout 1a 切换到1a这个版本

git branch 查看本地分支
git branch -a 查看远程分支
git reflog show 查看所有的commit
git add -u 将当前已跟踪且已修改文件更新

git clean -d -f //强制删除未被添加到git的路径中的文件

删除某个提交之前的所有提交
echo 'base' | git commit-tree bc67bd^{tree} 从commit bc67bd开始, 命名为base
git rebase --onto 5f2802 bc67bd 5f2802是上一句指令生成的sha前6位
git push -f

2. 重置

git reset [--hard|soft|mixed|merge|keep] [或HEAD]:将当前的分支重设(reset)到指定的commit或者HEAD(默认,如果不显示指定commit,默认是HEAD,即最新的一次提交),并且根据[mode]有可能更新index和working directory。mode的取值可以是hard、soft、mixed、merged、keep。下面来详细说明每种模式的意义和效果。
–hard 重设(reset) index和working directory,自从commit以来在working directory中的任何改变都被丢弃,并把HEAD指向commit。
git reset --hard b45959e 可以回退到这个版本

3. 查看记录

git log 会按提交时间列出所有的更新,最近的更新排在最上面
git log –p输出每一个commit之间的差异信息
git log --stat输出每一个commit之间的差异统计信息
git log--oneline输出历史commit的简短信息
git log --before="2019:12:31" --after="2019:01:01" 输出1个时间段的

git reflog 打印你记录你的每一次操作记录

4. 命令行下创建一个仓库

echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/xxx/test.git
git push -u origin master

5. push时不输入密码

如果使用的是http协议的github仓库地址,因此每次push 或者pull都需要密码,所以,将其修改为ssh协议的,这样,就不需要这么麻烦了。

5.1. 首先配置git ssh登录

$ssh-keygen
$cat ~/.ssh/id_rsa.pub 把其中的内容贴到github网站的设置中
$ssh -T [email protected] 测试

5.2. 修改远程remote url

修改项目中.git/config文件url = [email protected]:user_name/repo_name.git
或者使用如下命令:

git remote rm BranchName
git remote add BranchName [email protected]:UserName/Repository.git

6. 添加新的文件(夹)

git add *.cpp
git rm cached 1.cpp
git commit -m "添加aa 删除1.cpp"
这里如果提示要配置用户和邮箱,按照提示输入下面两句:
git config --global user.email "[email protected]"
git config --global user.email "user_name"
git push 上传完成

7. .git文件夹被误删除了

git init
git add .
git remote update
git checkout master

可以看看下载zip文件后再同步

8. 删除远程文件(夹)

如下,我把src里的全部移除,但是本地文件还保留。
git rm -r -n --cached */src/\* //-n:加上这个参数,执行命令时,是不会删除任何文件,而是展示此命令要删除的文件列表预览。
git rm -r --cached */src/\* //最终执行命令.
git commit -m "移除src目录下所有文件的版本控制" //提交
git push origin master //提交到远程服务器

9. 强制将 master 分支指向当前头指针的位置

git branch -f master HEAD

10. 检出 master 分支

git checkout master

11. 分支合并

切换到分支AAA
git checkout AAA
把dev分支合并到AAA分支
git merge dev

12. 常见错误

error: Your local changes to the following files would be overwritten by merge:
        xxx.c
Please commit your changes or stash them before you merge.

这是因为本地修改未提交。如果希望用远程代码库中的文件完全覆盖本地工作版本. 方法如下:
git reset --hard
git pull
如果希望与远程合并,并保留本地所做的改动,方法如下:
git stash 恢复到上次提交,同时备份本地所做修改
git pull
git stash pop 将刚刚备份的修改应用到当前工作区

你可能感兴趣的:(tools)