有没有办法做git pull
忽略任何本地文件更改而不会删除目录并且必须执行git clone
?
答案 0 :(得分:675)
如果你的意思是你想让pull覆盖本地更改,那么就像工作树是干净的那样进行合并,那么,清理工作树:
git reset --hard
git pull
如果有未跟踪的本地文件,您可以使用git clean
删除它们。使用git clean -f
删除未跟踪的文件,-df
删除未跟踪的文件和目录,使用-xdf
删除未跟踪或忽略的文件或目录。
另一方面,如果您想以某种方式保留本地修改,则在拉动之前使用藏匿隐藏它们,然后再重新应用它们:
git stash
git pull
git stash pop
我认为从字面上忽略这些更改没有任何意义,但是 - 拉的一半是合并,它需要将提交的内容版本与它所获取的版本合并。 / p>
答案 1 :(得分:216)
对我来说,以下工作:
(1)首先获取所有更改:
$ git fetch --all
(2)然后重置主人:
$ git reset --hard origin/master
(3)拉/更新:
$ git pull
答案 2 :(得分:22)
下面的命令总是不会工作。如果您这样做:
$ git checkout thebranch
Already on 'thebranch'
Your branch and 'origin/thebranch' have diverged,
and have 23 and 7 different commits each, respectively.
$ git reset --hard
HEAD is now at b05f611 Here the commit message bla, bla
$ git pull
Auto-merging thefile1.c
CONFLICT (content): Merge conflict in thefile1.c
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.
依旧......
要真的重新开始,下载分支并覆盖所有本地更改,只需执行以下操作:
$ git checkout thebranch
$ git reset --hard origin/thebranch
这样可以正常使用。
$ git checkout thebranch
Already on 'thebranch'
Your branch and 'origin/thebranch' have diverged,
and have 23 and 7 different commits each, respectively.
$ git reset --hard origin/thebranch
HEAD is now at 7639058 Here commit message again...
$ git status
# On branch thebranch
nothing to commit (working directory clean)
$ git checkout thebranch
Already on 'thebranch'
答案 3 :(得分:13)
您只需要一个与rm -rf local_repo && git clone remote_url
完全相同的命令,对吧?我也想要这个功能。我想知道为什么git不提供这样的命令(例如git reclone
或git sync
),svn也没有提供这样的命令(例如svn recheckout
或svn sync
)。 / p>
尝试以下命令:
git reset --hard origin/master
git clean -fxd
git pull
答案 4 :(得分:8)
git fetch --all && git reset --hard origin/master
答案 5 :(得分:7)
查看git stash将所有本地更改放入“存储文件”并恢复到上次提交。此时,您可以应用隐藏的更改,或将其丢弃。
答案 6 :(得分:7)
如果你在Linux上:
git fetch
for file in `git diff origin/master..HEAD --name-only`; do rm -f "$file"; done
git pull
for循环将删除在本地仓库中更改的所有跟踪文件,因此git pull
可以正常工作。
最好的事情是,只有被跟踪的文件才会被repo中的文件覆盖,所有其他文件都将保持不变。
答案 7 :(得分:1)
这对我有用
def test_update_record_of_table(capsys):
connection = sqlite3.connect("Northwind.db", timeout=10)
cursor_db = connection.cursor()
cursor_db.execute("select count(*) from test")
before_count = cursor_db.fetchone()[0]
cursor_db.execute("INSERT INTO {table_name}({fields}) VALUES ({new_record});".format(table_name='test', fields=tuple('CategoryName'), new_record=1400))
print("before_count", before_count)
assign_12_2.update_record_of_table("test", "CategoryName", "asdssf", 3, cursor_db)
cursor_db.execute("select CategoryName from test")
a = cursor_db.fetchall()[0]
connection.commit()
print(a)
assert before_count
在接受答案的情况下,我遇到冲突错误
答案 8 :(得分:0)
这将获取当前分支并尝试快进到主站:
git fetch && git merge --ff-only origin/master
答案 9 :(得分:0)
.gitignore
“只要您最初没有将它们提交到任何分支,就可以向.gitignore添加不需要的文件。”
还可以运行:
git update-index-假定未更改的文件名
https://chamindac.blogspot.com/2017/07/ignoring-visual-studio-2017-created.html
答案 10 :(得分:0)
我通常这样做:
git checkout .
git pull
在项目的根文件夹中。
答案 11 :(得分:0)
最简单的方法是:
{
"mimeType": "image/jpeg",
"kind": "drive#file",
"name": "file.jpg",
"driveId": "<Drive Id>",
"teamDriveId": "<Team Drive ID>",
"id": "<File ID>"
}