关于 Git
的安装使用及命令这些知识,网络上有很多前辈已经为大家准备很多教程,首先要好好感谢他们,本文后面也会有相关的资料供参考,在这里整理一下自己会用到的,大约是最简单最直接的了,复杂的我估计暂时也接触不到就先不学那么深了,因为我目前用 Windows10
,所以就只涉及到 Win
系统下的使用,只用命令行。
安装Git:
到http://msysgit.github.io/下载一个 msysgit
按 next
一路默认安装就好了。
安装完开始菜单找到 Git
-> Git Bash
就进入 Git
命令行操作了,实际感觉应该和 LINUX
以及 UNIX
是一样的,建议所有Git操作都用命令行进行而不用可视化的窗口,这样换个开发环境换个系统一样的使用。
Git的简单配置:
#配置使用git仓库的人员姓名
git config --global user.name "Name"
#配置使用git仓库的人员email git config --global user.email you@example.com
#配置到缓存 默认15分钟
git config --global credential.helper cache
#修改缓存时间 git config --global credential.helper 'cache --timeout=3600'
$ git config -1 #列举所有配置,根据需要配置
创建代码库repository:
cd e: #进入e盘 mkdir mygit #创建目录mygit
cd learngit #进入目录mygit pwd #显示当前目录
/e/mygit
$ git init #通过这个命令创建代码库
Initialized empty Git repository in /e/mygit/.git/
当然也可以在已经有的目录下创建代码库,创建成功在目录下生成一个隐藏文件夹 .git
用来记录所有信息,不要随意修改删除这个目录,创建代码库的目录不要有中文。
提交本地代码分两步:
第一步,将代码用add命令添加到暂存区 Staging Area
;
git add AndroidManifest.xml #添加单个AndroidManifest.xml文件 git add src #添加src目录
$ git add . #添加目录下的全部文件
第二步,将 Staging Area
中的代码提交到代码库 repository
;
$ git commit –m "你的注释" #将中转区已修改代码提交到代码库
要随时掌握暂存区当前的状态,使用 git status
命令。
如果 git status
告诉你有文件被修改过,用 git diff
可以查看修改内容。
在这里遇见一点小插曲,我在添加整个目录运行 git add .
命令的时候提示下面的错误;
warning: LF will be replaced by CRLF in XXXXXX
遇到这个问题是因为 windows
中的换行符为 CRLF
, 而在 linux
下的换行符为: LF
, Git
会自动把 LF
替换成 CRLF
,解决这个问题需要删除之前的 .git
文件夹,重新创建库,并运行下面代码设置关掉这个自动替换的选项;
$ git config --global core.autocrlf false
版本回退和撤销修改:
首先你得清楚上面那张图里面的三个概念,工作区,暂存区,代码库,提交代码第一步是通过 add
将修改过的需要提交的代码从工作区添加到暂存区,第二部是通过 commit
将暂存区的代码全部提交到代码库。
版本回退是回退到已经提交到代码库中的版本,涉及到以下命令;
git reset --hard commit_id #回退到某个指定版本,commit_id指版本号HEAD指当前版本HEAD^指上一个版本,以此类推 git log #回到过去,查看提交历史,以便确定要回退到哪个版本
$ git reflog #回到未来,查看命令历史,以便确定要回到未来的哪个版本
强制覆盖本地文件修改
git fetch --all
git reset --hard origin/master
撤销修改;
场景1:修改工作区某个文件,想直接丢弃工作区的修改时,用命令 git checkout -- file
。
场景2:不但工作区某个文件的内容,还add到了暂存区时,想丢弃修改,分两步,第一步用命令 git reset HEAD file
,就回到了场景1,第二步按场景1操作。
【2019/05/22 Update】
忽略某个已经被提交过的文件
场景:你提交过了git,然后发现有个文件(文件夹)是不应该提交的,这时候在 .gitignore
里添加忽略已经没有效果了,因为这个文件已经不是 Untracked Files
了,需要先删除 git
跟踪。
# 会删除跟踪并且删除本地文件
git rm somefile
# 只删除git跟踪,文件还在(推荐)
git rm --cache somefile
在你的 .gitignore
文件,把文件忽略掉,然后commit,push,以后对于这个文件的修改就会被忽略。
撤回git add的文件
场景:上去就是 git add .
发现把不该提交的文件也 add
了,这时候我们需要撤销add文件。
# 确认一下哪些文件被add了
git status
# 方案一,上一次add的文件会全部撤回
git reset HEAD
# 方案二,只撤销某个文件
git reset HEAD somefile
有冲突撤销 merge
场景:在使用 merge
后,发现有代码冲突,而这部分代码是同事负责的,需要同事解决冲突后再 merge
,这边状态在 merging
,需要撤销刚才的 merge
命令。
git merge --abort
使用github的一些问题
错误提示:
Permanently added the RSA host key for IP address '52.74.223.119' to the list of known host
这个意思大概就是讲 github
的 IP
添加到 hosts
文件即可,在 C:WindowsSystem32driversetchosts
文件末尾添加下面一行即可。
52.74.223.119 github.com
错误提示:
Error: GH007: Your push will post a private email address.
这个意思是你在 github
上设置了邮件地址隐私保护,登录 github
网页上找到 setting->emails->Keep my email address private
将这个勾选去掉再 push
就可以了。
先学习到这里,后面再学习 GitHub
结合使用远程代码库。
你一定是没看出来我是在说我自己[偷笑]
小白一个啊[可怜]
好厉害!我也要学习下。
小白一个啊
这样合适吗?
你一定是没看出来我是在说我自己
不,我看出来你做说你自己。所以问你这样说你自己合适吗?
合适啊,因为我真的是大龄小白一个,惭愧。
是有缓存~ 忘记清楚了[挖鼻屎]
[悲伤]骗我,友链在哪,没看到哇,有缓存么……
额~! 懒得研究![嘻嘻]
不明觉历,用不上啊。
一般产品迭代版本控制用得上
额~! 懒得研究!
骗我,友链在哪,没看到哇,有缓存么……
是有缓存~ 忘记清楚了